const mysql = require('mysql');
const crypto = require('crypto');

function query(sql, params = []) {
    // 从数据库里拿数据（同步）
    const con = mysql.createConnection({
        host: 'localhost',
        port: 3306,
        user: 'root',
        password: 'root',
        database: 'koa-case',
    });

    // 开始连接（异步）
    con.connect((error) => {
        if (error) return console.log('数据库连接失败', error.message);
        console.log('数据库连接成功');
    });

    return new Promise((resolve, reject) => {
        // 发送 SQL 语句，拿数据（异步）
        con.query(
            // 发送的 SQL 语句
            sql,
            // 语句中的参数
            params,
            // 数据库返回数据后，调用的 callback
            (error, data) => {
                // 如果错误，抛出错误
                if (error) return reject(error);
                resolve(data);
            },
        );

        // 关闭连接
        con.end();
    });
}

const passwordEncoder = (raw_password) => {
    return crypto
        .createHmac('sha256', 'koa case secret')
        .update(raw_password)
        .digest('hex');
};

module.exports = { query, passwordEncoder };
